package com.ruoyi.project.business.dailyschedulerule.service;

import com.ruoyi.project.business.dailyschedulerule.entity.DailyscheduleRule;
import com.ruoyi.project.business.dailyschedulerule.request.AddDailyscheduleRuleRequest;
import com.ruoyi.project.business.dailyschedulerule.request.ListDailyscheduleRuleRequest;
import com.ruoyi.project.business.dailyschedulerule.response.DailyscheduleRuleResponse;
import com.ruoyi.project.business.domain.rules.Rule;

import java.time.LocalDate;
import java.util.List;
import java.util.Map;

/**
 * 日排班规则Service接口
 * 
 * @author ${author}
 * @date 2024-04-03
 */
public interface IDailyscheduleRuleService {
    /**
     * 查询日排班规则
     *
     * @param id 日排班规则ID
     * @return 日排班规则
     */
    public DailyscheduleRuleResponse selectDailyscheduleRuleById(Long id);

    /**
     */
    public List<DailyscheduleRuleResponse> selectDailyscheduleRuleList(ListDailyscheduleRuleRequest request, Long tenantId);


    public int insertDailyscheduleRule(AddDailyscheduleRuleRequest request, Long operatorId, Long tenantId);

    /**
     * 修改日排班规则
     * 
     * @return 结果
     */
    public int updateDailyscheduleRule(DailyscheduleRule entity, Long operatorId, Long tenantId);

    /**
     * 批量删除日排班规则
     * 
     * @return 结果
     */
    public int deleteDailyscheduleRuleByIds(Long[] ids, Long operatorId, Long tenantId);

    /**
     * 删除日排班规则信息
     * 
     * @return 结果
     */
    public int deleteDailyscheduleRuleById(Long id, Long operatorId, Long tenantId);

    List<DailyscheduleRule> selectRulesByUserIds(List<Long> userIds, LocalDate assignDate, Long tenantId);


    Map<Long, List<Rule>> selectRulesMapByUserIds(List<Long> userIds, LocalDate assignDate, Long tenantId);
}
